﻿import gs.dataTransfer.XMLParser;
import clases.dades.apartats.ApRepertori;
import clases.dades.Idioma;

/**
 * Carrega i parseja l'XML de repertori
 * 
 * @author JDo
 * @version 1.0
 */
class clases.dades.xml.XMLApRepertori extends MovieClip{
	private var _repertoriCatala  :Array;
	private var _repertoriCastella:Array;
	private var _repertoriAngles  :Array;
	
	private var _onCarregat  :Function;
	private var _base        :MovieClip;
	
	/**
	 * Constructor
	 * 
	 * @param $xml        XML a carregar i parsejar
	 * @param $onCarregat Funció a cridar quan s'acaba tot el proces
	 * @param $base       MC origen de la crida a la classe
	 */
	public function XMLApRepertori($xml:String,$onCarregat:Function,$base:MovieClip){
		_onCarregat = $onCarregat;
		_base       = $base;
		XMLParser.load($xml, xmlCarregat, this);
	}
	
	/**
	 * Carrega de l'XML completa
	 * 
	 * @param $ok        Ens diu si s'ha pogut carregar i parsejar l'XML
	 * @param $resultats Resultat del parseig
	 * @param $xml       XML que s'ha carregat
	 * @param $base      Origen de la crida del parsejador
	 */
	private function xmlCarregat($ok:Boolean, $resultats:Object, $xml:XML, $base:MovieClip):Void {
		$xml = null;
		if ($ok) {
			$base.parsejaResultats($resultats); 
		}
	}
	
	/**
	 * Parsseig de l'XML
	 * 
	 * @param $resultado Resultat del parser per tractar-lo 
	 */
	private function parsejaResultats($resultado:Object):Void{
		_repertoriCatala   = new Array();
		_repertoriCastella = new Array();
		_repertoriAngles   = new Array();
		
		var estilCat:ApRepertori;
		var estilCas:ApRepertori;
		var estilEng:ApRepertori;
		
		for(var e:Number=0;e<$resultado.estil.length;e++){
			estilCat = new ApRepertori($resultado.estil[e].catala[0].value);
			estilCas = new ApRepertori($resultado.estil[e].castella[0].value);
			estilEng = new ApRepertori($resultado.estil[e].angles[0].value);
			for(var r:Number=0;r<$resultado.estil[e].cansons[0].canso.length;r++){
				estilCat.addCanso($resultado.estil[e].cansons[0].canso[r].value);
				estilCas.addCanso($resultado.estil[e].cansons[0].canso[r].value);
				estilEng.addCanso($resultado.estil[e].cansons[0].canso[r].value);
			}
			_repertoriCatala.push(estilCat);
			_repertoriCastella.push(estilCas);
			_repertoriAngles.push(estilEng);
		}

		/*_repertoriCatala = new ApHistoria($resultado.foto[0].value,
										   $resultado.titul[0].catala[0].value ,
										   $resultado.text[0].catala[0].value);*/

		_onCarregat(_base);
	}
	
	/**
	 * Ens dona les dades del idioma corresponent
	 * 
	 * @param $id Identificador del idioma a retornar
	 * @return Array
	 */
	public function getIdioma($id:Number):Array{
		switch($id){
			case Idioma.CATALA:
				return _repertoriCatala;
			break;
			
			case Idioma.CASTELLA:
				return _repertoriCastella;
			break;
			
			case Idioma.ANGLES:
				return _repertoriAngles;
			break;
		}
	}
}